const {RES_CODE} = require('../utils/contants')
const { verifyToken } = require('../utils/tokenUtils')

module.exports = async (req, res, next) => {
  // 放行预检请求
  if (req.method==='OPTIONS') {
    next()
    return
  }
  // 得到请求头中的token
  const token = req.headers['token']
  
  try {
    // 得到token中的用户id
    const userId = await verifyToken(token)
    // 将userId保存到request对象 => 后面执行的路由可以得到
    req.userId = userId
    // 放行请求
    next()
  } catch (error) { // 解码token出错了
    // 指定响应码为401
    res.statusCode = 401
    // 返回一个错误的响应
    res.json({
      code: RES_CODE.DATA_ERROR,
      message: error.message
    })
  }
}